module.exports = {
  /**
   * 生成随机码
   * @param {number} length 码长度
   * @param {number} chunkSize 分组长度 可选
   * @param {string} separator 分组分隔符 可选
   * @returns {string} 生成的码
   */
  generateRandomCode: function (length, chunkSize, separator) {
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    let result = ''
    let formattedResult = ''

    // 生成随机字符串
    for (let i = 0; i < length; i++) {
      result += characters.charAt(Math.floor(Math.random() * characters.length))
    }

    // 如果chunkSize或separator未定义，则不进行分组
    if (chunkSize && separator) {
      // 按照指定的chunkSize进行分组并插入separator
      for (let i = 0; i < result.length; i++) {
        if (i > 0 && i % chunkSize === 0) {
          formattedResult += separator
        }
        formattedResult += result[i]
      }
    } else {
      // 如果没有分组，直接使用原始的result
      formattedResult = result
    }

    return formattedResult
  },

  /**
   * 判断数组中是否包含子数组
   * @param {array} mainArray 主数组
   * @param {array} subArray 子数组
   * @returns {boolean} 是否包含
   */
  arrayIncludesSubarray: function (mainArray, subArray) {
    // 非数组直接false
    if (!Array.isArray(mainArray) || !Array.isArray(subArray)) {
      return false
    }
    // 子数组大于主数组直接false
    if (subArray.length > mainArray.length) {
      return false
    }
    return mainArray.some((_, start) => mainArray.slice(start, start + subArray.length).every((value, index) => value === subArray[index]))
  }
}
